home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / kowin / font / fonted31.lzh / fed3func.c < prev    next >
C/C++ Source or Header  |  1991-01-29  |  8KB  |  346 lines

  1. /*/ ******************************************************************* /*/
  2. /*/                                    /*/
  3. /*/       FONTED3.win    version 1    小笠原博之 SPS0783 COR.    /*/
  4. /*/                                    /*/
  5. /*/ ******************************************************************* /*/
  6.  
  7. #include    <stdio.h>
  8. #include    <wlib.h>
  9. #include    <parts.h>
  10.  
  11. #include    "fed3const.h"
  12. #include    "fonted3.h"
  13.  
  14. extern DrawBuf    dbuf_2[];
  15.  
  16. #define        Draw_EditScreen( aa, bb )    WindowDraw( bb, dbuf_2, 2 )
  17.  
  18.  
  19. struct FedFunc    swmode[]={
  20.     "All Clr ",    fed3allclr,
  21.     "        ",    fed3nop,
  22.     "Roll←┐",    fed3rollL,
  23.     "  ←→  ",    fed3revH,
  24.     "Reverse ",    fed3reverse,
  25.     "Sft <<",    fed3shiftL,
  26.     "Sft ∧∧",    fed3shiftU,
  27.     "Area CLR",    fed3areaclr,
  28.     "Area MOV",    fed3areamov,
  29.     "Area←→",    fed3arearevH,
  30.     "        ",    fed3nop,
  31.     "  SEND  ",    send_font,
  32.  
  33.     "Clr undo",    fed3clrundo,
  34.     "        ",    fed3nop,
  35.     "Roll┌→",    fed3rollR,
  36.     "  ↑↓  ",    fed3revV,
  37.     "        ",    fed3nop,
  38.     "Sft >>",    fed3shiftR,
  39.     "Sft ∨∨",    fed3shiftD,
  40.     "Area REV",    fed3arearev,
  41.     "Area CPY",    fed3areacpy,
  42.     "Area↑↓",    fed3arearevV,
  43.     "        ",    fed3nop,
  44.     "  SAVE  ",    savefont
  45.  
  46. };
  47.  
  48. static unsigned short    BakBuf[EDITSIZEY];
  49.  
  50. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  51.         画面消去
  52. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  53. fed3allclr( wp )
  54. WindowID    wp;
  55. {
  56.     int    i;
  57.     for( i=0 ; i<EDITSIZEY ; i++ )
  58.         BakBuf[i]= ImgBuf[i];
  59.     Init_EditScreen();
  60.     Draw_EditScreen( 0, wp );
  61. }
  62.  
  63. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  64.         画面消去の復活
  65. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  66. fed3clrundo( wp )
  67. WindowID    wp;
  68. {
  69.     int        i;
  70.     unsigned    a;
  71.     for( i=0 ; i<EDITSIZEY ; i++ ){
  72.         a= BakBuf[i];
  73.         BakBuf[i]= ImgBuf[i];
  74.         ImgBuf[i]= a;
  75.     }
  76.     ImgtoEdit();
  77.     Draw_EditScreen( 0, wp );
  78. }
  79.  
  80. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  81.         左回転
  82. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  83. fed3rollL( wp )
  84. WindowID    wp;
  85. {
  86.     int    x,
  87.         y,
  88.         i;
  89.     unsigned short    buf[EDITSIZEY];
  90.     for( i=0 ; i<EDITSIZEY ; i++ )
  91.         buf[i]= ImgBuf[i];
  92.     for( y=0 ; y<EDITSIZEY ; y++ ){
  93.         for( i= buf[y], x=0 ; x<EDITSIZEX ; x++, i<<=1 ){
  94.             Pset_EditScreen( y, 15-x, !(i & 32768), 0, wp );
  95.         }
  96.     }
  97.     Draw_EditScreen( 0, wp );
  98. }
  99.  
  100. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  101.         右回転
  102. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  103. fed3rollR( wp )
  104. WindowID    wp;
  105. {
  106.     int    x,
  107.         y,
  108.         i;
  109.     unsigned short    buf[EDITSIZEY];
  110.     for( i=0 ; i<EDITSIZEY ; i++ )
  111.         buf[i]= ImgBuf[i];
  112.     for( y=0 ; y<EDITSIZEY ; y++ ){
  113.         for( i= buf[y], x=0 ; x<EDITSIZEX ; x++, i<<=1 ){
  114.             Pset_EditScreen( 15-y, x, !(i & 32768), FALSE, wp );
  115.         }
  116.     }
  117.     Draw_EditScreen( 0, wp );
  118. }
  119.  
  120. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  121.         ダミー
  122. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  123. fed3nop( wp )
  124. WindowID    wp;
  125. {
  126. }
  127.  
  128. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  129.         画面反転
  130. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  131. fed3reverse( wp )
  132. WindowID    wp;
  133. {
  134.     revall( ImgBuf );
  135.     ImgtoEdit();
  136.     Draw_EditScreen( 0, wp );
  137. }
  138.  
  139. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  140.         シフト左
  141. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  142. fed3shiftL( wp )
  143. WindowID    wp;
  144. {
  145.     shiftL( ImgBuf );
  146.     ImgtoEdit();
  147.     Draw_EditScreen( 0, wp );
  148. }
  149.  
  150. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  151.         シフト右
  152. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  153. fed3shiftR( wp )
  154. WindowID    wp;
  155. {
  156.     shiftR( ImgBuf );
  157.     ImgtoEdit();
  158.     Draw_EditScreen( 0, wp );
  159. }
  160.  
  161. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  162.         シフト上
  163. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  164. fed3shiftU( wp )
  165. WindowID    wp;
  166. {
  167.     shiftU( ImgBuf );
  168.     ImgtoEdit();
  169.     Draw_EditScreen( 0, wp );
  170. }
  171.  
  172. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  173.         シフト下
  174. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  175. fed3shiftD( wp )
  176. WindowID    wp;
  177. {
  178.     shiftD( ImgBuf );
  179.     ImgtoEdit();
  180.     Draw_EditScreen( 0, wp );
  181. }
  182.  
  183. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  184.         部分消去
  185. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  186. fed3areaclr( wp )
  187. WindowID    wp;
  188. {
  189.     struct    Area    area;
  190.     if( AreaSelect1( &area, wp ) ){
  191.         int    x,
  192.             y;
  193.         for( y= area.y1 ; y<= area.y2 ; y++ ){
  194.             for( x= area.x1 ; x<= area.x2 ; x++ ){
  195.                 Pset_EditScreen( x, y, 0, TRUE, wp );
  196.             }
  197.         }
  198.     }
  199. }
  200.  
  201. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  202.         部分反転
  203. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  204. fed3arearev( wp )
  205. WindowID    wp;
  206. {
  207.     struct    Area    area;
  208.     if( AreaSelect1( &area, wp ) ){
  209.         int    x,
  210.             y;
  211.         for( y= area.y1 ; y<= area.y2 ; y++ ){
  212.             for( x= area.x1 ; x<= area.x2 ; x++ ){
  213.                 Pset_EditScreen( x, y, ( ImgBuf[y] & ( 32768 >> x ) )!=0, TRUE, wp );
  214.             }
  215.         }
  216.     }
  217. }
  218.  
  219. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  220.         部分逆転
  221. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  222. fed3arearevH( wp )
  223. WindowID    wp;
  224. {
  225.     struct    Area    area;
  226.     if( AreaSelect1( &area, wp ) ){
  227.         int    y;
  228.         for( y= area.y1 ; y<= area.y2 ; y++ ){
  229.             int    x;
  230.             for( x= area.x1 ; x<= (area.x2+area.x1)/2 ; x++ ){
  231.                 int    a= !(ImgBuf[y] & (32768>>x) ),
  232.                     b= !(ImgBuf[y] & (32768>> (area.x2+area.x1-x) ) );
  233.                 Pset_EditScreen( x, y, b, TRUE, wp );
  234.                 Pset_EditScreen( area.x2+area.x1-x, y, a, TRUE, wp );
  235.             }
  236.         }
  237.     }
  238. }
  239.  
  240. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  241.         部分逆転縦
  242. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  243. fed3arearevV( wp )
  244. WindowID    wp;
  245. {
  246.     struct    Area    area;
  247.     if( AreaSelect1( &area, wp ) ){
  248.         int    y;
  249.         for( y= area.y1 ; y<= (area.y2+area.y1)/2 ; y++ ){
  250.             int    x;
  251.             for( x= area.x1 ; x<= area.x2 ; x++ ){
  252.                 int    a= !(ImgBuf[y] & (32768>>x) ),
  253.                     b= !(ImgBuf[area.y2+area.y1-y] & (32768>>x) );
  254.                 Pset_EditScreen( x, y, b, TRUE, wp );
  255.                 Pset_EditScreen( x, area.y2+area.y1-y, a, TRUE, wp );
  256.             }
  257.         }
  258.     }
  259. }
  260.  
  261. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  262.         部分移動
  263. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  264. fed3areamov( wp )
  265. WindowID    wp;
  266. {
  267.     struct    Area    area;
  268.     if( AreaSelect2( &area, wp, "移動先?" ) ){
  269.         int    x,
  270.             y;
  271.         int    xx,
  272.             yy;
  273.         if( (area.y1 > area.sy) || (area.y1 == area.sy && area.x1 > area.sx) ){
  274.             for( yy= area.sy, y= area.y1 ; y<= area.y2 ; y++, yy++ ){
  275.                 for( xx= area.sx, x= area.x1 ; x<= area.x2 ; x++, xx++ ){
  276.                     int    a= !(ImgBuf[y] & (32768 >> x) );
  277.                     Pset_EditScreen( x, y, 0, TRUE, wp );
  278.                     if( xx>=0 && xx<EDITSIZEX && yy>=0 && yy<EDITSIZEY )
  279.                         Pset_EditScreen( xx, yy, a, TRUE, wp );
  280.                 }
  281.             }
  282.         }else{
  283.             for( yy= area.sy+(area.y2-area.y1), y= area.y2 ; y>= area.y1 ; y--, yy-- ){
  284.                 for( xx= area.sx+(area.x2-area.x1), x= area.x2 ; x>= area.x1 ; x--, xx-- ){
  285.                     int    a= !(ImgBuf[y] & (32768 >> x) );
  286.                     Pset_EditScreen( x, y, 0, TRUE, wp );
  287.                     if( xx>=0 && xx<EDITSIZEX && yy>=0 && yy<EDITSIZEY )
  288.                         Pset_EditScreen( xx, yy, a, TRUE, wp );
  289.                 }
  290.             }
  291.         }
  292.     }
  293. }
  294.  
  295. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  296.         部分複写
  297. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  298. fed3areacpy( wp )
  299. WindowID    wp;
  300. {
  301.     struct    Area    area;
  302.     if( AreaSelect2( &area, wp, "複写先?" ) ){
  303.         int    x,
  304.             y;
  305.         int    xx,
  306.             yy;
  307.         if( (area.y1 > area.sy) || (area.y1 == area.sy && area.x1 > area.sx) ){
  308.             for( yy= area.sy, y= area.y1 ; y<= area.y2 ; y++, yy++ ){
  309.                 for( xx= area.sx, x= area.x1 ; x<= area.x2 ; x++, xx++ ){
  310.                     if( xx>=0 && xx<EDITSIZEX && yy>=0 && yy<EDITSIZEY )
  311.                         Pset_EditScreen( xx, yy, !( ImgBuf[y] & ( 32768 >> x ) ), TRUE, wp );
  312.                 }
  313.             }
  314.         }else{
  315.             for( yy= area.sy+(area.y2-area.y1), y= area.y2 ; y>= area.y1 ; y--, yy-- ){
  316.                 for( xx= area.sx+(area.x2-area.x1), x= area.x2 ; x>= area.x1 ; x--, xx-- ){
  317.                     if( xx>=0 && xx<EDITSIZEX && yy>=0 && yy<EDITSIZEY )
  318.                         Pset_EditScreen( xx, yy, !( ImgBuf[y] & ( 32768 >> x ) ), TRUE, wp );
  319.                 }
  320.             }
  321.         }
  322.     }
  323. }
  324.  
  325. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  326.         左右反転
  327. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  328. fed3revH( wp )
  329. WindowID    wp;
  330. {
  331.     revH( ImgBuf );
  332.     ImgtoEdit();
  333.     Draw_EditScreen( 0, wp );
  334. }
  335. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  336.         上下反転
  337. /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/
  338. fed3revV( wp )
  339. WindowID    wp;
  340. {
  341.     revV( ImgBuf );
  342.     ImgtoEdit();
  343.     Draw_EditScreen( 0, wp );
  344. }
  345.  
  346.